package com.dshore.messagecenter.service.basedata.impl;

import java.util.List;
import java.util.Map;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.dshore.messagecenter.dao.basedata.TemplateDao;
import com.dshore.messagecenter.model.basedata.MdTemplate;
import com.dshore.messagecenter.model.system.ResponseResult;
import com.dshore.messagecenter.service.basedata.TemplateManagementService;
import com.dshore.messagecenter.util.Page;
import com.dshore.messagecenter.util.UUIDUtil;


@Service
public class TemplateManagementServiceImpl implements TemplateManagementService {

	@Autowired
	private TemplateDao templateDao;

	/**
	 * 展示模板所有数据
	 */
	@Override
	public Page<MdTemplate> queryListAll(MdTemplate template) {
		// 总记录数
		long total = templateDao.queryCountByPrama(template);
		if(total<=template.getLimit()||total<template.getOffset()) {
			template.setOffset(0);
		}
		// 模糊查询
		List<MdTemplate> rows = templateDao.queryListByPrama(template);
		Page<MdTemplate> page = new Page<MdTemplate>(template.getLimit(), total, template.getOffset(),rows);
		return page;
	}

	/**
	 * 新增模板
	 */
	public ResponseResult<Void> addTemplate(MdTemplate template) {
		ResponseResult<Void> responseResult=new ResponseResult<Void>(200, "新增成功");
		if(checkName(template.getId(),template.getTemplateName()).equals("true")) {
			template.setId(UUIDUtil.getUUId());
			Integer i= templateDao.insertTemplate(template);
			if(i<0) {
				responseResult.setState(400);
				responseResult.setMessage("新增失败");
			}
		}else {
			responseResult.setState(400);
			responseResult.setMessage("新增失败");
		}
			return responseResult;
	}
	/**
	 * 修改模板
	 */
	public ResponseResult<Void> changeTemplate(MdTemplate template) {
		ResponseResult<Void> responseResult=new ResponseResult<Void>(200, "修改成功");
		if(checkName(template.getId(),template.getTemplateName()).equals("true")) {
			Integer i = templateDao.updateTemplate(template);
			if(i<0) {
				responseResult.setState(400);
				responseResult.setMessage("修改失败");
			}
		}else {
			responseResult.setState(400);
			responseResult.setMessage("修改失败");
		}
			return responseResult;
	}

	/**
	 * 删除模板
	 */
	public ResponseResult<Void> delTemplate(String ids) {
		ResponseResult<Void> responseResult = new ResponseResult<Void>();
		String[] id = ids.split(",");
		List<Map<String, Object>> list = templateDao.selectTemplate(id);
		if(list.size()>0) {
			responseResult.setState(400);
			responseResult.setMessage("删除失败！主题队列含有删除的模板");
		}else {
			templateDao.delTemplate(id);
			responseResult.setState(200);
			responseResult.setMessage("删除成功");
	}
		return responseResult;
}

	/**
	 * 查询单个模板
	 */
	public MdTemplate getById(String id) {

		return templateDao.getById(id);
	}

	/**
	 * 查询模板重复
	 */
	public String checkName(String id,String templatename) {
		//修改
		if(StringUtils.isNotBlank(id)) {
			if(StringUtils.isNotBlank(templatename)) {
				List<MdTemplate> mdTemplate=templateDao.checkName(templatename);
				if(mdTemplate.size()>0) {
					if(mdTemplate.get(0).getId().equals(id)) {
						return "true";
					}else {
						return "false";
					}		
				}else {
					return "true";	
				}
			}else{
				return "false";
			}	
		}else {
			//新增
			if(StringUtils.isNotBlank(templatename)) {
				List<MdTemplate> mdTemplate=templateDao.checkName(templatename);
				if(mdTemplate.size()>0) {
					return "false";
				}else {
					return "true";
				}
			}else {
				return "false";
			}
		}
	}
}
